package com.example.aircraftticketingsystemserver.service;

import com.example.aircraftticketingsystemserver.entity.Flight;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.aircraftticketingsystemserver.entity.Ticket;
import com.example.aircraftticketingsystemserver.entity.TransferFlight;
import com.example.aircraftticketingsystemserver.utils.Page;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author lxz
 * @since 2024-08-05
 */
public interface IFlightsService extends IService<Flight> {
    /**
     * 添加航班
     */
    void addFlight(Flight flight);
    /**
     * 添加航班号对应的机票信息
     */
    void addTicketByFlightId(Flight flight,Ticket ticket);
    /**
     * 删除航班（单个）
     */
    void deleteFlightByFlightId(Integer flightId);
    /**
     * 删除航班（批量）
     */
    void batchDeleteFlight(List<Integer> flightsId);
    /**
     * 更新航班
     */
    void updateFlight(Flight flight);
    /**
     * 查询航班（多条件查询）
     * 航班号
     * 航空公司
     * 时间范围
     * 起始地
     * 目的地
     * 起始机场
     * 目的机场
     */
    Page getFlightsPage(Integer pageNo,
                            Integer pageSize,
                            String flightNumber,
                            String airline,
                            String departureCity,
                            String arrivalCity,
                            String departureAirport,
                            String arrivalAirport,
                            String status,
                            Date start,
                            Date end
                            );
    /**
     * 查询航班列表
     */
    List<Flight> getFLightList(String flightNumber,
                               String airline,
                               String departureCity,
                               String arrivalCity,
                               String departureAirport,
                               String arrivalAirport,
                               String status,
                               Date start,
                               Date end);

    /**
     * 查询中转航班
     */
    List<TransferFlight> getTransferFlight(String departureCity,String arrivalCity);
    /**
     * 用Id查到航班
     */
    Flight getFlightById(Integer flightId);
}
